<template>
	<div class="app">
		<!--整个系统的头部, mint-ui中的组件-->
		<mt-header fixed title="Vue内容管理系统"></mt-header>
			<!--返回按钮-->
			<div class="back" v-if="isShow">
				<a v-on:click="goback">&lt; 返回</a>
				<!--<a @click="goback">返回</a>这是简写形式-->
			</div>
		<!--这是一个路由占位，将来所有组件都是替换这个位置来实现页面跳转，这也是一个单页系统的实现-->
		<router-view></router-view>

		<!--整个系统的底部-->
		<nav class="mui-bar mui-bar-tab">
			<router-link class="mui-tab-item" to="/Home">
				<span class="mui-icon mui-icon-home"></span>
				<span class="mui-tab-label">首页</span>
			</router-link>
			<router-link class="mui-tab-item" to="/Member">
				<span class="mui-icon mui-icon-email"></span>
				<span class="mui-tab-label">会员 </span>
			</router-link>
			<router-link class="mui-tab-item" to="/ShopCar">
				<span class="mui-icon mui-icon-contact">
					<span class="mui-badge" id="badge" v-if="nubShow">0</span>
				</span>
				<span class="mui-tab-label">购物</span>
			</router-link>
			<router-link class="mui-tab-item" to="/Search">
				<span class="mui-icon mui-icon-gear"></span>
				<span class="mui-tab-label">搜索</span>
			</router-link>
		</nav>
	</div>
</template>

<script>
	//导入localstorage来获得商品数量更新小图标
    import  {getItem} from './kits/localStorageHelper.js';
	//6.0.2 注册commonVue.js(用来接收goodsInfo.vue,shopcar.vue中通过vueObj.$emit()发送过来的数据)注册commonVue.js  (app.vue和goodsinfo.vue不是父子关系所以不能直接传值，要通过一个公用vue传值)
	import {vueObj} from './kits/commonVue.js';
	//6.0.3注册接收事件
	vueObj.$on('shopData',function (data) {
		console.log('data='+data);
		//由于vueObj和export default不是同一个vue对象，所以return中定义的值，vueObj无法用，所以用原生js来操作
		//实现DOM操作，改购物车上的数字
		let badge = document.getElementById('badge');
		let count = badge.innerText - 0; //-0是字符串转数字   获取原始值
		count+=data;  //在原始值基础上加新数据

		//将新数据修改回去
		badge.innerText = count;
    })
    vueObj.$on('newEmit',function (){
        let badge = document.getElementById('badge');
//        console.log(badge);
        //将新数据修改回去
        badge.innerText = getItem().length;
	})

    export default{
		data(){
			return{
				isShow:true,  //这个就是用来控制返回按钮显示隐藏的，这是第一个方法
				nubShow:true  //用来控制小图标显示与隐藏的（购物车商品数量）
			}
        },
		created(){
		    //当当前app.vue组件创建完毕以后触发,只触发一次
			//可以在初次进入的时候在这个位置初始化一些参数
			this.isShow = false;  //当然这里可以直接修改data中初始属性 也可以完成，这是第二个方法
		},
		watch:{  //注意新知识点，监控当前路由对象，$route,如果url中的路由规则发生改变，就会触发这个方法**********************************************************************
			'$route':function(newval,oldval){   //这里设置监控首页隐藏返回按钮
				if (newval.path.toLowerCase() == '/home'){
					this.isShow = false;
//					console.log(123);
				}else {
					this.isShow = true;
//                  console.log(321);
				}
            }
		},
		methods:{
		    goback(){
		        this.$router.go(-1); //表示返回上一个页面
			}
		},
		mounted:function () {  //在created中dom还没渲染无法操作，所以只能在这里修改购物车数量的值
            let badge = document.getElementById('badge');
            console.log(badge);
            //将新数据修改回去
            badge.innerText = getItem().length;
        }
	}
</script>

<style scoped>
	.back{
		position: fixed;
		top:10px;
		left:10px;
		z-index: 2;
	}
	.back a{
		font-size: 16px;
		color: #fff;
		font-weight:500;
	}

</style>